//[{()}],只要有右括号，栈顶一定是对应类型的左括号
function isValid(s: string): boolean {
    if(s.length%2 ==1) return false
    let stack:string[] = []
    let map = new Map([
      [')','('],
      [']','['],
      ['}','{'],
    ])
    //遍历整个字符串
    for (const char of s) {
      if(map.has(char)) {//是右括号
        if(stack.length <= 0 || stack[stack.length - 1] != map.get(char)) {//如果没有左括号，或者栈顶不是左括号，就是false
          return false
        }
        stack.pop()

      }else {//不是右括号，就是左括号，入栈
        stack.push(char)
      }
    }
    return stack.length == 0//不等于0，说明没有消消乐完
};
console.log(isValid('[{(})]'))